const fs = require('fs-extra');
const path = require('path');

async function manualPack() {
  const appName = '密码管理器';
  const outputDir = path.join(__dirname, 'dist', `${appName}-win32-x64`);
  const electronDir = path.join(__dirname, 'node_modules', 'electron', 'dist');
  
  try {
    // 清理输出目录
    if (fs.existsSync(outputDir)) {
      await fs.remove(outputDir);
    }
    
    console.log('创建输出目录...');
    await fs.ensureDir(outputDir);
    
    // 复制 Electron 二进制文件
    console.log('复制 Electron 文件...');
    await fs.copy(electronDir, outputDir);
    
    // 重命名 electron.exe 为应用名称
    const electronExe = path.join(outputDir, 'electron.exe');
    const appExe = path.join(outputDir, `${appName}.exe`);
    if (fs.existsSync(electronExe)) {
      await fs.rename(electronExe, appExe);
    }
    
    // 创建 resources/app 目录
    const appResourcesDir = path.join(outputDir, 'resources', 'app');
    await fs.ensureDir(appResourcesDir);
    
    // 复制应用文件
    console.log('复制应用文件...');
    const filesToCopy = [
      'package.json',
      'src',
      'dist-renderer',
      'vite.config.js',
      'README.md',
      'BUILD.md'
    ];
    
    for (const file of filesToCopy) {
      const srcPath = path.join(__dirname, file);
      const destPath = path.join(appResourcesDir, file);
      if (fs.existsSync(srcPath)) {
        await fs.copy(srcPath, destPath);
        console.log(`已复制: ${file}`);
      }
    }
    
    // 创建 package.json 用于生产环境
    const packageJson = await fs.readJson(path.join(appResourcesDir, 'package.json'));
    packageJson.main = 'src/main/main.js';
    await fs.writeJson(path.join(appResourcesDir, 'package.json'), packageJson, { spaces: 2 });
    
    console.log(`\n✅ 打包完成！`);
    console.log(`📁 输出位置: ${outputDir}`);
    console.log(`🚀 可执行文件: ${appExe}`);
    
  } catch (error) {
    console.error('❌ 打包失败:', error);
    process.exit(1);
  }
}

manualPack();
